package plus.easydo.server.user.mp.service.impl;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.BeanUtils;
import plus.easydo.server.user.mp.entity.SystemLog;
import plus.easydo.server.user.mp.qo.SystemLogQo;
import plus.easydo.server.user.mp.vo.SystemLogVo;
import plus.easydo.server.user.mp.mapper.SystemLogMapper;
import plus.easydo.server.user.mp.service.ISystemLogService;
import org.springframework.stereotype.Service;
import plus.easydo.utils.ResultConvertUtil;

import java.util.List;


/**
 * 系统日志Service层
 * 
 * @author laoyu
 * @date 2021-12-27 16:07:48
 */
@Service
public class SystemLogServiceImpl extends ServiceImpl<SystemLogMapper,SystemLog> implements ISystemLogService {



    /**
     * 查询系统日志
     * 
     * @param requestId 系统日志ID
     * @return 系统日志
     */
    @Override
    public SystemLogVo selectById(Long requestId) {
        SystemLog systemLog = baseMapper.selectById(requestId);
        return ResultConvertUtil.convertVo(systemLog, SystemLogVo::new);
    }

    /**
     * 分页条件查询系统日志列表
     * 
     * @param qo 查询条件封装
     * @return 系统日志
     */
    @Override
    public IPage<SystemLogVo> page(SystemLogQo qo) {
        IPage<SystemLog> page = qo.startPage();
        IPage<SystemLog> iPage = baseMapper.selectSystemLogList(page,qo);
        List<SystemLogVo> voList = ResultConvertUtil.copyList(iPage.getRecords(), SystemLogVo::new);
        IPage<SystemLogVo> voPage = new Page<>();
        BeanUtils.copyProperties(iPage,voPage);
        voPage.setRecords(voList);
        return voPage;
    }

    /**
     * 获取所有系统日志列表
     *
     * @param qo 查询条件封装
     * @return 系统日志
     */
    @Override
    public List<SystemLogVo> list(SystemLogQo qo) {
        List<SystemLog> list = baseMapper.selectList(Wrappers.query());
        return ResultConvertUtil.copyList(list, SystemLogVo::new);
    }

    /**
     * 批量删除系统日志
     * 
     * @param requestIds 需要删除的系统日志ID
     * @return 结果
     */
    @Override
    public Boolean deleteByIds(Long[] requestIds) {
        return baseMapper.deleteSystemLogByIds(requestIds) > 0;
    }

    /**
     * 删除系统日志信息
     * 
     * @param requestId 系统日志ID
     * @return 结果
     */
    @Override
    public Boolean deleteById(Long requestId) {
        return baseMapper.deleteSystemLogById(requestId) > 0;
    }

    @Override
    public Boolean clean() {
        return baseMapper.clean();
    }

}
